home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MATHEMAT / STATISTI / 0850C.ZIP / SET3.ARC / DATA-RCL.PAS < prev    next >
Pascal/Delphi Source File  |  1979-12-31  |  20KB  |  863 lines

  1. VAR XFILE:TEXT;
  2.     YFILE:TEXT;
  3.     ZFILE:TEXT;
  4.     X:REAL;
  5.     CHOICE,NUMCELL1,G,NUMADD,NUMCOR,H,L,M,NUMROW,NUMCELL,K,SWITCH4,I,NUMCOL,J:INTEGER;
  6.     NUMLEVEL:INTEGER;
  7.     SWITCH3:CHAR;
  8.     FILENAME:STRING[12];
  9.     FILENAM2:STRING[12];
  10.     FILENAM3:STRING[12];
  11.     NUMTODEL:ARRAY[1..100] OF INTEGER;
  12.     SWITCH2:BOOLEAN;
  13.     F:ARRAY[1..11] OF TEXT;
  14.     FILENAM:ARRAY[1..11] OF STRING[12];
  15.     FILENAMX:STRING[12];
  16.     C:CHAR;
  17.  
  18. PROCEDURE DATAIN;
  19. BEGIN
  20. WRITELN ('COLUMN BY ROW BY LEVEL DATA ENTRY');
  21. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  22. READLN (SWITCH3);
  23. IF SWITCH3='Y' THEN SWITCH4:=1;
  24. IF SWITCH3='y' THEN SWITCH4:=1;
  25. IF SWITCH4=1 THEN BEGIN
  26. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA ENTRY');èEND;
  27. WRITE ('ENTER FILE NAME TO CALL THE DATA: ');
  28. READLN (FILENAME);
  29. IF SWITCH4=1 THEN BEGIN
  30. WRITELN (LST,'ENTER FILE NAME TO CALL THE DATA: ',FILENAME);
  31. END;
  32.  
  33. ASSIGN (XFILE,FILENAME);
  34. REWRITE (XFILE);
  35.  
  36. X:=6;
  37. WRITELN (XFILE,X); {LEVEL}
  38. WRITE ('NUMBER OF COLUMNS = ');
  39. READLN (NUMCOL);
  40. X:=NUMCOL;
  41. WRITELN (XFILE,X); {COL}
  42. IF SWITCH4=1 THEN BEGIN
  43. WRITELN (LST,'NUMBER OF COLUMNS = ',NUMCOL);
  44. END;
  45. WRITE ('NUMBER OF ROWS = ');
  46. READLN (NUMROW);
  47. X:=NUMROW;
  48. WRITELN (XFILE,X);
  49. IF SWITCH4=1 THEN BEGIN
  50. WRITELN (LST,'NUMBER OF ROWS = ',NUMROW);
  51. END;èWRITE ('NUMBER OF LEVELS = ');
  52. READLN (NUMLEVEL);
  53. X:=NUMLEVEL;
  54. WRITELN (XFILE,X);
  55. IF SWITCH4=1 THEN BEGIN
  56. WRITELN (LST,'NUMBER OF LEVELS = ',NUMLEVEL);
  57. END;
  58. WRITE ('NUMBER PER CELL = ');
  59. READLN (NUMCELL);
  60. IF SWITCH4=1 THEN BEGIN
  61. WRITELN (LST,'NUMBER PER CELL = ',NUMCELL);
  62. END;
  63. X:=NUMCELL;
  64. WRITELN (XFILE,X);
  65. IF SWITCH4=1 THEN BEGIN
  66. WRITE ('NUMBER PER CELL = ',NUMCELL);
  67. END;
  68.  
  69. FOR I:=1 TO NUMCOL DO
  70. BEGIN
  71. WRITE ('COLUMN ',I,', ');
  72. IF SWITCH4=1 THEN BEGIN
  73. WRITE (LST,'COLUMN ',I,', ');
  74. END;
  75. FOR J:=1 TO NUMROW DO
  76. BEGINèWRITE ('ROW ',J,', ');
  77. IF SWITCH4=1 THEN BEGIN
  78. WRITE (LST,'ROW ',J,', ');
  79. END;
  80. FOR L:=1 TO NUMLEVEL DO
  81. BEGIN
  82. WRITELN ('LEVEL ',L);
  83. IF SWITCH4=1 THEN BEGIN
  84. WRITELN (LST,'LEVEL ',L);
  85. END;
  86. FOR K:=1 TO NUMCELL DO
  87. BEGIN
  88. WRITE ('ITEM ',K,' = ');
  89. READLN (X);
  90. WRITELN (XFILE,X);
  91. IF SWITCH4=1 THEN BEGIN
  92. WRITELN (LST,'ITEM X ',K:4,' = ',X:8:3);
  93. END;
  94. END;
  95. END;
  96. END;
  97. END;
  98. CLOSE (XFILE);
  99. END;
  100.  
  101. PROCEDURE DATAOUT;è
  102. BEGIN
  103. WRITELN ('COLUMN BY ROW BY LEVEL DATA OUTPUT');
  104. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  105. READLN (SWITCH3);
  106. IF SWITCH3='Y' THEN SWITCH4:=1;
  107. IF SWITCH3='y' THEN SWITCH4:=1;
  108. IF SWITCH4=1 THEN BEGIN
  109. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA OUTPUT');
  110. END;
  111. WRITE ('ENTER FILE NAME TO CALL THE DATA: ');
  112. READLN (FILENAME);
  113. IF SWITCH4=1 THEN BEGIN
  114. WRITELN (LST,'ENTER FILE NAME TO CALL THE DATA: ',FILENAME);
  115. END;
  116.  
  117. ASSIGN (XFILE,FILENAME);
  118. RESET (XFILE);
  119.  
  120. READLN (XFILE,X); {LEVEL}
  121.  
  122. READLN (XFILE,X);
  123.  
  124. NUMCOL:=ROUND(X);
  125. WRITELN ('NUMBER OF COLUMNS = ',NUMCOL);
  126. IF SWITCH4=1 THEN BEGINèWRITELN (LST,'NUMBER OF COLUMNS = ',NUMCOL);
  127. END;
  128. READLN (XFILE,X);
  129. NUMROW:=ROUND(X);
  130. WRITELN ('NUMBER OF ROWS = ',NUMROW);
  131. IF SWITCH4=1 THEN BEGIN
  132. WRITELN (LST,'NUMBER OF ROWS = ',NUMROW);
  133. END;
  134. READLN (XFILE,X);
  135. NUMLEVEL:=ROUND(X);
  136. WRITELN ('NUMBER OF LEVELS = ',NUMLEVEL);
  137. IF SWITCH4=1 THEN BEGIN
  138. WRITELN (LST,'NUMBER OF LEVELS = ',NUMLEVEL);
  139. END;
  140. READLN (XFILE,X);
  141. NUMCELL:=ROUND(X);
  142. WRITELN ('NUMBER PER CELL = ',NUMCELL);
  143. IF SWITCH4=1 THEN BEGIN
  144. WRITELN (LST,'NUMBER PER CELL = ',NUMCELL);
  145. END;
  146.  
  147.  
  148. FOR I:=1 TO NUMCOL DO
  149. BEGIN
  150. WRITE ('COLUMN ',I,', ');
  151. IF SWITCH4=1 THEN BEGINèWRITE (LST,'COLUMN ',I,', ');
  152. END;
  153. FOR J:=1 TO NUMROW DO
  154. BEGIN
  155. WRITE ('ROW ',J,', ');
  156. IF SWITCH4=1 THEN BEGIN
  157. WRITE (LST,'ROW ',J,', ');
  158. END;
  159. FOR M:=1 TO NUMLEVEL DO
  160. BEGIN
  161. WRITELN ('LEVEL ',M);
  162. IF SWITCH4=1 THEN BEGIN
  163. WRITELN (LST,'LEVEL ',M);
  164. END;
  165. FOR K:=1 TO NUMCELL DO
  166. BEGIN
  167. READLN (XFILE,X);
  168. WRITELN ('ITEM ',K,' = ',X:8:3);
  169. IF SWITCH4=1 THEN BEGIN
  170. WRITELN (LST,'ITEM ',K:4,' = ',X:8:3);
  171. END;
  172. END;
  173. END;
  174. END;
  175. END;
  176. CLOSE (XFILE);èEND;
  177.  
  178. PROCEDURE DATAADD;
  179. BEGIN
  180. WRITELN ('COLUMN BY ROW BY LEVEL DATA ADDITION');
  181. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  182. READLN (SWITCH3);
  183. IF SWITCH3='Y' THEN SWITCH4:=1;
  184. IF SWITCH3='y' THEN SWITCH4:=1;
  185. IF SWITCH4=1 THEN BEGIN
  186. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA ADDITION');
  187. END;
  188.  
  189. WRITE ('ENTER FILE NAME OF THE ORIGINAL DATA: ');
  190. READLN (FILENAME);
  191.  
  192. IF SWITCH4=1 THEN BEGIN
  193. WRITELN (LST,'ENTER FILE NAME OF THE ORIGINAL DATA: ',FILENAME);
  194. END;
  195.  
  196. WRITE ('ENTER A FILE NAME TO CALL THE NEW FILE: ');
  197. READLN (FILENAM2);
  198.  
  199. IF SWITCH4=1 THEN BEGIN
  200. WRITELN (LST,'ENTER A FILE NAME FOR THE NEW FILE: ',FILENAM2);
  201. END;è
  202. ASSIGN (XFILE,FILENAME);
  203. ASSIGN (YFILE,FILENAM2);
  204. RESET (XFILE);
  205. REWRITE (YFILE);
  206.  
  207. READLN (XFILE,X); {LEVEL}
  208. WRITELN (YFILE,X);
  209. WRITE ('NUMBER TO BE ADDED TO EACH CELL = ');
  210. READLN (NUMADD);
  211.  
  212. IF SWITCH4=1 THEN BEGIN
  213. WRITELN (LST,'NUMBER TO BE ADDED TO EACH CELL = ');
  214. END;
  215.  
  216. READLN (XFILE,X); {COL}
  217. NUMCOL:=ROUND(X);
  218. WRITELN ('NUMBER OF COLUMNS = ',NUMCOL);
  219.  
  220. IF SWITCH4=1 THEN BEGIN
  221. WRITELN ('NUMBER LST,OF COLUMNS = ',NUMCOL);
  222. END;
  223. WRITELN (YFILE,X);
  224.  
  225. READLN (XFILE,X); {ROW}
  226. NUMROW:=ROUND(X);èWRITELN ('NUMBER OF ROWS = ',NUMROW);
  227.  
  228. IF SWITCH4=1 THEN BEGIN
  229. WRITELN (LST,'NUMBER OF ROWS = ',NUMROW);
  230. END;
  231. WRITELN (YFILE,X);
  232.  
  233. READLN (XFILE,X);  {LEVEL}
  234. NUMLEVEL:=ROUND(X);
  235. WRITELN ('NUMBER OF LEVELS = ',NUMLEVEL);
  236.  
  237. IF SWITCH4=1 THEN BEGIN
  238. WRITELN (LST,'NUMBER OF LEVELS = ',NUMLEVEL);
  239. END;
  240. WRITELN (YFILE,X);
  241.  
  242. READLN (XFILE,X);  {CELL}
  243. NUMCELL:=ROUND(X);
  244. WRITELN ('NUMBER PER CELL = ',NUMCELL);
  245.  
  246. IF SWITCH4=1 THEN BEGIN
  247. WRITELN (LST,'NUMBER PER CELL = ',NUMCELL);
  248. END;
  249. X:=X+NUMADD;
  250. WRITELN (YFILE,X);
  251. èFOR I:=1 TO NUMCOL DO
  252. BEGIN
  253. WRITE ('COLUMN ',I,', ');
  254.  
  255. IF SWITCH4=1 THEN BEGIN
  256. WRITE (LST,'COLUMN ',I,', ');
  257. END;
  258.  
  259. FOR J:=1 TO NUMROW DO
  260. BEGIN
  261. WRITE ('ROW ',J,', ');
  262.  
  263. IF SWITCH4=1 THEN BEGIN
  264. WRITE (LST,'ROW ',J,', ');
  265. END;
  266.  
  267. FOR M:=1 TO NUMLEVEL DO
  268. BEGIN
  269. WRITELN ('LEVEL ',M);
  270.  
  271. IF SWITCH4=1 THEN BEGIN
  272. WRITELN (LST,'LEVEL ',M);
  273. END;
  274.  
  275. FOR K:=1 TO NUMCELL DO
  276. BEGINèREADLN (XFILE,X);
  277. WRITELN (YFILE,X);
  278. WRITELN ('ITEM ',K,' = ',X:8:3);
  279.  
  280. IF SWITCH4=1 THEN BEGIN
  281. WRITELN (LST,'ITEM ',K:4,' = ',X:8:3);
  282. END;
  283. END;
  284.  
  285. FOR L:=1 TO NUMADD DO
  286. BEGIN
  287. WRITE ('ITEM ',K+L,' = ');
  288. READLN (X);
  289. WRITELN (YFILE,X);
  290. END;
  291. END;
  292. END;
  293. END;
  294. CLOSE (XFILE);
  295. CLOSE (YFILE);
  296. END;
  297.  
  298. PROCEDURE CORRECT;
  299. BEGIN
  300. WRITELN ('COLUMN BY ROW BY LEVEL DATA CORRECTION');
  301. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');èREADLN (SWITCH3);
  302. IF SWITCH3='Y' THEN SWITCH4:=1;
  303. IF SWITCH3='y' THEN SWITCH4:=1;
  304. IF SWITCH4=1 THEN BEGIN
  305. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA CORRECTION');
  306. END;
  307.  
  308. WRITE ('ENTER FILE NAME OF THE ORIGINAL DATA: ');
  309. READLN (FILENAME);
  310. IF SWITCH4=1 THEN BEGIN
  311. WRITELN (LST,'ENTER FILE NAME OF THE ORIGINAL DATA: ',FILENAME);
  312. END;
  313. WRITE ('ENTER FILE NAME TO CALL THE NEW DATA: ');
  314. READLN (FILENAM2);
  315. IF SWITCH4=1 THEN BEGIN
  316. WRITELN (LST,'ENTER FILE NAME TO CALL THE NEW DATA: ',FILENAM2);
  317. END;
  318.  
  319. ASSIGN (XFILE,FILENAME);
  320. ASSIGN (YFILE,FILENAM2);
  321. RESET (XFILE);
  322. REWRITE (YFILE);
  323.  
  324. READLN (XFILE,X); {LEVEL}
  325. WRITELN (YFILE,X);
  326. èREADLN (XFILE,X); {COLUMN}
  327. NUMCOL:=ROUND(X);
  328. WRITELN ('NUMBER OF COLUMNS = ',NUMCOL);
  329. IF SWITCH4=1 THEN BEGIN
  330. WRITELN ('NUMBER LST,OF COLUMNS = ',NUMCOL);
  331. END;
  332. WRITELN (YFILE,X);
  333.  
  334. READLN (XFILE,X); {ROW}
  335. NUMROW:=ROUND(X);
  336. WRITELN ('NUMBER OF ROWS = ',NUMROW);
  337. IF SWITCH4=1 THEN BEGIN
  338. WRITELN (LST,'NUMBER OF ROWS = ',NUMROW);
  339. END;
  340. WRITELN (YFILE,X);
  341.  
  342. READLN (XFILE,X); {LEVEL}
  343. NUMLEVEL:=ROUND(X);
  344. WRITELN ('NUMBER OF ROWS = ',NUMLEVEL);
  345. IF SWITCH4=1 THEN BEGIN
  346. WRITELN (LST,'NUMBER OF ROWS = ',NUMLEVEL);
  347. END;
  348. WRITELN (YFILE,X);
  349.  
  350.  
  351. READLN (XFILE,X); {CELL}èNUMCELL:=ROUND(X);
  352. WRITELN ('NUMBER PER CELL = ',NUMCELL);
  353. IF SWITCH4=1 THEN BEGIN
  354. WRITELN (LST,'NUMBER PER CELL = ',NUMCELL);
  355. END;
  356. WRITELN (YFILE,X);
  357.  
  358. FOR I:=1 TO NUMCOL DO
  359. BEGIN
  360. WRITE ('COLUMN ',I);
  361. IF SWITCH4=1 THEN BEGIN
  362. WRITE (LST,'COLUMN ',I);
  363. END;
  364. FOR J:=1 TO NUMROW DO
  365. BEGIN
  366. WRITE ('ROW ',J);
  367. IF SWITCH4=1 THEN BEGIN
  368. WRITE (LST,'ROW ',J);
  369. END;
  370.  
  371. FOR M:=1 TO NUMLEVEL DO
  372. BEGIN
  373. WRITELN ('LEVEL',M);
  374. WRITE ('NUMBER OF ITEMS TO CORRECT IN THIS CELL = ');
  375. READLN (NUMADD);
  376. IF SWITCH4=1 THEN BEGINèWRITELN (LST,'LEVEL',M);
  377. WRITELN (LST,'NUMBER OF ITEMS TO CORRECT IN THIS CELL = ',NUMADD);
  378. END;
  379.  
  380. L:=1;
  381. FOR G:=1 TO NUMADD DO
  382. BEGIN
  383. WRITE ('ITEM NUMBER TO BE CORRECTED = ');
  384. READLN (NUMCOR);
  385. IF L>NUMCOR THEN BEGIN
  386. WRITELN ('YOU HAVE TRIED TO CORRECT AN EARLIER ITEM AFTER CORRECTING A LATER');
  387. WRITELN ('ONE.  I AM CLOSING THE FILE AND YOU WILL HAVE TO TRY AGAIN.');
  388. CLOSE (XFILE);
  389. ERASE (YFILE);
  390. END;
  391. FOR K:=L TO NUMCOR-1 DO
  392. BEGIN
  393. READLN (XFILE,X);
  394. WRITELN (YFILE,X);
  395. END;
  396. L:=NUMCOR+1;
  397. READLN (XFILE,X);
  398. WRITE ('CORRECTED ITEM = ');
  399. READLN (X);
  400. WRITELN (YFILE,X);
  401. IF SWITCH4=1 THEN BEGINèWRITELN (LST,'CORRECTED ITEM = ',X:8:3);
  402. END;
  403. END;
  404. FOR K:=L TO NUMCELL DO
  405. BEGIN
  406. READLN (XFILE,X);
  407. WRITELN (YFILE,X);
  408. END;
  409. END;
  410. END;
  411. END;
  412. CLOSE (XFILE);
  413. CLOSE (YFILE);
  414. END;
  415.  
  416. PROCEDURE DELETE;
  417. BEGIN
  418. WRITELN ('COLUMN BY ROW BY LEVEL DATA DELETION');
  419. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  420. READLN (SWITCH3);
  421. IF SWITCH3='Y' THEN SWITCH4:=1;
  422. IF SWITCH3='y' THEN SWITCH4:=1;
  423. IF SWITCH4=1 THEN BEGIN
  424. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA DELETION');
  425. END;
  426. èWRITE ('ENTER FILE NAME OF THE ORIGINAL DATA: ');
  427. READLN (FILENAME);
  428. IF SWITCH4=1 THEN BEGIN
  429. WRITELN (LST,'ENTER FILE NAME OF THE ORIGINAL DATA: ',FILENAME);
  430. END;
  431. WRITE ('ENTER FILE NAME TO CALL THE NEW DATA: ');
  432. READLN (FILENAM2);
  433. IF SWITCH4=1 THEN BEGIN
  434. WRITELN (LST,'ENTER FILE NAME TO CALL THE NEW DATA: ',FILENAM2);
  435. END;
  436.  
  437. ASSIGN (XFILE,FILENAME);
  438. ASSIGN (YFILE,FILENAM2);
  439. RESET (XFILE);
  440. REWRITE (YFILE);
  441.  
  442. READLN (XFILE,X); {LEVEL}
  443. WRITELN (YFILE,X);
  444.  
  445. WRITE ('TOTAL NUMBER OF ITEMS TO BE DELETED FROM EACH CELL = ');
  446. READLN (NUMADD);
  447. IF SWITCH4=1 THEN BEGIN
  448. WRITELN (LST,'TOTAL NUMBER OF ITEMS TO BE DELETED FROM TO EACH CELL = ');
  449. END;
  450.  
  451. READLN (XFILE,X); {COL}èNUMCOL:=ROUND(X);
  452. WRITELN ('NUMBER OF COLUMNS = ',NUMCOL);
  453. IF SWITCH4=1 THEN BEGIN
  454. WRITELN ('NUMBER LST,OF COLUMNS = ',NUMCOL);
  455. END;
  456. WRITELN (YFILE,X);
  457.  
  458. READLN (XFILE,X); {ROW}
  459. NUMROW:=ROUND(X);
  460. WRITELN ('NUMBER OF ROWS = ',NUMROW);
  461. IF SWITCH4=1 THEN BEGIN
  462. WRITELN (LST,'NUMBER OF ROWS = ',NUMROW);
  463. END;
  464. WRITELN (YFILE,X);
  465.  
  466. READLN (XFILE,X); {LEVEL}
  467. NUMLEVEL:=ROUND(X);
  468. WRITELN ('NUMBER OF ROWS = ',NUMLEVEL);
  469. IF SWITCH4=1 THEN BEGIN
  470. WRITELN (LST,'NUMBER OF ROWS = ',NUMLEVEL);
  471. END;
  472. WRITELN (YFILE,X);
  473.  
  474.  
  475. READLN (XFILE,X); {CELL}
  476. NUMCELL:=ROUND(X);èWRITELN ('NUMBER PER CELL = ',NUMCELL);
  477. IF SWITCH4=1 THEN BEGIN
  478. WRITELN (LST,'NUMBER PER CELL = ',NUMCELL);
  479. END;
  480. X:=X-NUMADD;
  481. WRITELN (YFILE,X);
  482.  
  483. FOR I:=1 TO NUMADD DO
  484. BEGIN
  485. WRITE ('NUMBER OF ITEM ',I,' TO BE DELETED FROM EACH CELL = ');
  486. READLN (NUMTODEL[I]);
  487. END;
  488.  
  489.  
  490. FOR I:=1 TO NUMCOL DO
  491. BEGIN
  492. FOR J:=1 TO NUMROW DO
  493. BEGIN
  494. FOR M:=1 TO NUMLEVEL DO
  495. BEGIN
  496. L:=1;
  497.  
  498. FOR G:=1 TO NUMADD DO
  499. IF L>NUMTODEL[G] THEN BEGIN
  500. WRITELN ('YOU HAVE TRIED TO CORRECT AN EARLIER ITEM AFTER CORRECTING A LATER');
  501. WRITELN ('ONE.  I AM CLOSING THE FILE AND YOU WILL HAVE TO TRY AGAIN.');èCLOSE (XFILE);
  502. ERASE (YFILE);
  503. END;
  504. FOR M:=L TO NUMTODEL[G]-1 DO
  505. BEGIN
  506. READLN (XFILE,X);
  507. WRITELN (YFILE,X);
  508. END;
  509. L:=NUMTODEL[G]+1;
  510. READLN (XFILE,X);
  511. FOR K:=L TO NUMCELL DO
  512. BEGIN
  513. READLN (XFILE,X);
  514. WRITELN (YFILE,X);
  515. END;
  516. END;
  517. END;
  518. END;
  519.  
  520. CLOSE (XFILE);
  521. CLOSE (YFILE);
  522. END;
  523.  
  524. PROCEDURE COMBINE;
  525. BEGIN
  526. WRITELN ('COLUMN BY ROW BY LEVEL DATA COMBINATION');èWRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  527. READLN (SWITCH3);
  528. IF SWITCH3='Y' THEN SWITCH4:=1;
  529. IF SWITCH3='y' THEN SWITCH4:=1;
  530. IF SWITCH4=1 THEN BEGIN
  531. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA COMBINATION');
  532. END;
  533. WRITE ('ENTER FILE NAME TO CALL THE COMBINED DATA: ');
  534. READLN (FILENAME);
  535. IF SWITCH4=1 THEN BEGIN
  536. WRITELN (LST,'ENTER FILE NAME TO CALL THE COMBINED DATA: ',FILENAME);
  537. END;
  538. WRITE ('ENTER FILE NAME OF FIRST DATA SOURCE: ');
  539. READLN (FILENAM2);
  540. IF SWITCH4=1 THEN BEGIN
  541. WRITELN (LST,'ENTER FILE NAME OF FIRST DATA SOURCE: ',FILENAM2);
  542. END;
  543. WRITE ('ENTER FILE NAME OF SECOND DATA SOURCE: ');
  544. READLN (FILENAM3);
  545. IF SWITCH4=1 THEN BEGIN
  546. WRITELN (LST,'ENTER FILE NAME OF SECOND DATA SOURCE: ',FILENAM3);
  547. END;
  548.  
  549. ASSIGN (XFILE,FILENAME);
  550. ASSIGN (YFILE,FILENAM2);
  551. ASSIGN (ZFILE,FILENAM3);èREWRITE (XFILE);
  552. RESET (YFILE);
  553. RESET (ZFILE);
  554.  
  555. READLN (YFILE,X); {LEVEL}
  556. READLN (ZFILE,X);
  557. WRITELN (XFILE,X);
  558.  
  559.  
  560. READLN (YFILE,X); {COLUMN}
  561. READLN (ZFILE,X);
  562. NUMCOL:=ROUND(X);
  563. WRITELN ('NUMBER OF COLUMNS = ',NUMCOL);
  564. IF SWITCH4=1 THEN BEGIN
  565. WRITELN ('NUMBER LST,OF COLUMNS = ',NUMCOL);
  566. END;
  567. WRITELN (XFILE,X);
  568.  
  569. READLN (YFILE,X); {ROW}
  570. READLN (ZFILE,X);
  571. NUMROW:=ROUND(X);
  572. WRITELN ('NUMBER OF ROWS = ',NUMROW);
  573. IF SWITCH4=1 THEN BEGIN
  574. WRITELN (LST,'NUMBER OF ROWS = ',NUMROW);
  575. END;
  576. WRITELN (XFILE,X);è
  577. READLN (YFILE,X); {LEVEL}
  578. READLN (ZFILE,X);
  579. NUMLEVEL:=ROUND(X);
  580. WRITELN ('NUMBER OF ROWS = ',NUMLEVEL);
  581. IF SWITCH4=1 THEN BEGIN
  582. WRITELN (LST,'NUMBER OF ROWS = ',NUMLEVEL);
  583. END;
  584. WRITELN (XFILE,X);
  585.  
  586.  
  587. READLN (YFILE,X); {CELL}
  588. NUMCELL1:=ROUND(X);
  589. READLN (ZFILE,X);
  590. NUMCELL:=ROUND(X);
  591. WRITELN ('NUMBER PER CELL = ',NUMCELL);
  592. IF SWITCH4=1 THEN BEGIN
  593. WRITELN (LST,'NUMBER PER CELL = ',NUMCELL);
  594. END;
  595. X:=NUMCELL+NUMCELL1;
  596. WRITELN (XFILE,X);
  597.  
  598.  
  599. FOR I:=1 TO NUMCOL DO
  600. BEGIN
  601. WRITE ('COLUMN ',I,', ');èIF SWITCH4=1 THEN BEGIN
  602. WRITE (LST,'COLUMN ',I,', ');
  603. END;
  604. FOR J:=1 TO NUMROW DO
  605. BEGIN
  606. WRITE ('ROW ',J,', ');
  607. IF SWITCH4=1 THEN BEGIN
  608. WRITE (LST,'ROW ',J,', ');
  609. END;
  610.  
  611. FOR M:=1 TO NUMLEVEL DO
  612. BEGIN
  613. WRITELN ('LEVEL',M);
  614. IF SWITCH4=1 THEN BEGIN
  615. WRITELN (LST,'LEVEL',M);
  616. END;
  617.  
  618. FOR K:=1 TO NUMCELL1 DO
  619. BEGIN
  620. READLN (YFILE,X);
  621. WRITELN (XFILE,X);
  622. WRITELN ('ITEM ',K,' = ',X:8:3);
  623. IF SWITCH4=1 THEN BEGIN
  624. WRITELN (LST,'ITEM X ',K:4,' = ',X:8:3);
  625. END;
  626. END;èFOR L:=1 TO NUMCELL DO
  627. BEGIN
  628. READLN (ZFILE,X);
  629. WRITELN ('ITEM ',K+L,' = ',X:8:3);
  630. WRITELN (XFILE,X);
  631. IF SWITCH4=1 THEN BEGIN
  632. WRITELN (LST,'ITEM ',K+L,' = ',X:8:3);
  633. END;
  634. END;
  635. END;
  636. END;
  637. END;
  638. CLOSE (XFILE);
  639. CLOSE (YFILE);
  640. CLOSE (ZFILE);
  641. END;
  642.  
  643. PROCEDURE SEPARATE;
  644. BEGIN
  645. WRITELN ('COLUMN BY ROW BY LEVEL DATA SEPARATION TO N COLUMN BY ROW FILES');
  646. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  647. READLN (SWITCH3);
  648. IF SWITCH3='Y' THEN SWITCH4:=1;
  649. IF SWITCH3='y' THEN SWITCH4:=1;
  650. IF SWITCH4=1 THEN BEGIN
  651. WRITELN (LST,'COLUMN BY ROW BY LEVEL DATA SEPARATION TO N COLUMN BY ROW FILES,');èEND;
  652.  
  653. WRITE ('NAME OF DATA FILE: ');
  654. READLN (FILENAMX);
  655. IF SWITCH4=1 THEN BEGIN
  656. WRITELN (LST,'NAME OF DATA FILE: ',FILENAMX);
  657. END;
  658. ASSIGN (XFILE,FILENAMX);
  659. RESET (XFILE);
  660. READLN (XFILE,X); {LEVEL}
  661. READLN (XFILE,X); {COLUMN}
  662. WRITELN ('NUMBER OF COLUMNS TO SEPARATE = ',X:5:0);
  663. NUMCOL:=ROUND(X);
  664. IF SWITCH4=1 THEN BEGIN
  665. WRITELN (LST,'NUMBER OF COLUMNS TO SEPARATE = ',X:5:0);
  666. END;
  667.  
  668. READLN (XFILE,X);
  669. NUMROW:=ROUND(X);
  670. WRITELN ('NUMBER OF ROWS IN EACH COLUMN = ',X:5:0);
  671. IF SWITCH4=1 THEN BEGIN
  672. WRITELN (LST,'NUMBER OF ROWS IN EACH COLUMN = ',X:5:0);
  673. END;
  674.  
  675. READLN (XFILE,X);
  676. NUMLEVEL:=ROUND(X);èWRITELN ('NUMBER OF LEVELS IN EACH ROW = ',X:5:0);
  677. IF SWITCH4=1 THEN BEGIN
  678. WRITELN (LST,'NUMBER OF LEVELS IN EACH ROW = ',X:5:0);
  679. END;
  680.  
  681. READLN (XFILE,X); {NUM IN CELL}
  682. NUMCELL:=ROUND(X);
  683. WRITELN ('NUMBER OF ITEMS IN EACH CELL = ',X:5:0);
  684. IF SWITCH4=1 THEN BEGIN
  685. WRITELN (LST,'NUMBER OF ITEMS IN EACH CELL = ',X:5:0);
  686. END;
  687.  
  688. FOR I:=1 TO NUMCOL DO
  689. BEGIN
  690. WRITE ('NAME OF FILE ',I,' FOR SEPARATION: ');
  691. READLN (FILENAME[I]);
  692. IF SWITCH4=1 THEN BEGIN
  693. WRITELN (LST,'NAME OF FILE ',I,' FOR SEPARATION: ',FILENAME[I]);
  694. END;
  695. ASSIGN (F[I],FILENAME[I]);
  696. REWRITE (F[I]);
  697. END;
  698.  
  699. FOR I:=1 TO NUMCOL DO
  700. BEGIN
  701. X:=5;èWRITELN (F[I],X); {LEVEL}
  702. X:=NUMROW;
  703. WRITELN (F[I],X); {N OF NEW COL}
  704. X:=NUMLEVEL;
  705. WRITELN (F[I],X); {N OF NEW ROW}
  706. X:=NUMCELL;
  707. WRITELN (F[I],X); {N IN CELL}
  708. END;
  709.  
  710. FOR I:=1 TO NUMCOL DO
  711. BEGIN
  712. FOR J:=1 TO NUMROW DO
  713. BEGIN
  714. FOR M:=1 TO NUMLEVEL DO
  715. BEGIN
  716. FOR K:=1 TO NUMCELL DO
  717. BEGIN
  718. READLN (XFILE,X);
  719. WRITELN (F[I],X);
  720. END;
  721. END;
  722. END;
  723. END;
  724.  
  725. FOR I:=1 TO NUMCOL DO
  726. BEGINèCLOSE (F[I]);
  727. END;
  728. CLOSE (XFILE);
  729. END;
  730.  
  731. PROCEDURE MERGE;
  732. BEGIN
  733. WRITELN ('ROW BY COLUMN BY LEVEL DATA MERGE FROM N COLUMN BY ROW FILES');
  734. WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
  735. READLN (SWITCH3);
  736. IF SWITCH3='Y' THEN SWITCH4:=1;
  737. IF SWITCH3='y' THEN SWITCH4:=1;
  738. IF SWITCH4=1 THEN BEGIN
  739. WRITELN (LST,'ROW BY  COLUMN DATA MERGE FROM N COLUMN BY ROW FILES');
  740. END;
  741. WRITE ('NAME OF FINAL FILE: ');
  742. READLN (FILENAMX);
  743. IF SWITCH4=1 THEN BEGIN
  744. WRITELN (LST,'NAME OF FINAL FILE: ',FILENAMX);
  745. END;
  746. ASSIGN (XFILE,FILENAMX);
  747. REWRITE (XFILE);
  748.  
  749. X:=6;
  750. WRITELN (XFILE,X); {LEVEL}
  751. WRITE ('NUMBER OF FILES TO MERGE  = ');èREADLN (NUMCOL);
  752. X:=NUMCOL;
  753. WRITELN (XFILE,X); {COL}
  754. IF SWITCH4=1 THEN BEGIN
  755. WRITELN (LST,'NUMBER OF FILES TO MERGE  = ',NUMCOL);
  756. END;
  757.  
  758.  
  759. FOR I:=1 TO NUMCOL DO
  760. BEGIN
  761. WRITE ('NAME OF FILE ',I,' TO MERGE: ');
  762. READLN (FILENAME[I]);
  763. ASSIGN (F[I],FILENAME[I]);
  764. RESET (F[I]);
  765. IF SWITCH4=1 THEN BEGIN
  766. WRITELN (LST,'NAME OF FILE ',I,' TO MERGE: ',FILENAME[I]);
  767. END;
  768. END;
  769.  
  770. FOR I:=1 TO NUMCOL DO
  771. BEGIN
  772. READLN (F[I],X); {LEVEL}
  773. READLN (F[I],X); {N OF OLD COL, NEW ROW}
  774. NUMROW:=ROUND(X);
  775. READLN (F[I],X); {N OF OLD ROW, NEW LEVEL}
  776. NUMLEVEL:=ROUND(X);èREADLN (F[I],X); {N IN CELL}
  777. NUMCELL:=ROUND(X);
  778. END;
  779. X:=NUMROW;
  780. WRITELN (XFILE,X); {ROWS};
  781. WRITELN ('NUMBER OF ROWS IN THE NEW DATA = ',NUMROW);
  782. IF SWITCH4=1 THEN BEGIN
  783. WRITELN (LST,'NUMBER OF ROWS IN THE NEW DATA = ',NUMROW);
  784. END;
  785. X:=NUMLEVEL;
  786. WRITELN (XFILE,X); {LEVEL}
  787. WRITELN ('NUMBER OF LEVELS IN THE NEW DATA = ',NUMLEVEL);
  788. IF SWITCH4=1 THEN BEGIN
  789. WRITELN (LST,'NUMBER OF LEVELS IN THE NEW DATA = ',NUMLEVEL);
  790. END;
  791. X:=NUMCELL;
  792. WRITELN (XFILE,X);
  793. WRITELN ('NUMBER OF ITEMS PER CELL = ',NUMCELL);
  794. IF SWITCH4=1 THEN BEGIN
  795. WRITELN (LST,'NUMBER OF ITEMS PER CELL = ',NUMCELL);
  796. END;
  797.  
  798. FOR I:=1 TO NUMCOL DO
  799. FOR J:=1 TO (NUMROW*NUMCELL*NUMLEVEL) DO
  800. BEGIN
  801. READLN (F[I],X);èWRITELN (XFILE,X);
  802. END;
  803.  
  804. FOR I:=1 TO NUMCOL DO
  805. BEGIN
  806. CLOSE (F[I]);
  807. END;
  808. CLOSE (XFILE);
  809. END;
  810.  
  811.  
  812.  
  813.  
  814. BEGIN
  815. WRITELN ('ROW BY COLUMN BY LEVEL DATA MANAGEMENT SYSTEM.  IN THIS FORM,');
  816. WRITELN ('THE DATA IS USED FOR THE THREE WAY ANALYSIS OF VARIANCE PROGRAMS.');
  817. WRITELN ('SINCE THE CELLS MUST BE EQUAL, THE PROGRAM REQUIRES THAT ANY DATA');
  818. WRITELN ('ADDITION OR DELETION BE DONE IN ALL CELLS.  WHEN COMBINING, REMEMBER ');
  819. WRITELN ('THAT THE FILES TO BE COMBINED MUST HAVE THE SAME NUMBER OF COLUMNS');
  820. WRITELN ('ROWS AND LEVELS.  THE SEPARATION OPTION CREATES N COLUMN BY ROW FILES');
  821. WRITELN ('FROM THE ORIGINAL COLUMN BY ROW BY LEVEL FILE.  IN OTHER WORDS, THE');
  822. WRITELN ('OPTION CREATES TWO WAY FILES FROM A THREE WAY FILE.  WHAT WERE COLUMNS');
  823. WRITELN ('IN THE ORIGINAL FILE BECOMES SEPARATE FILES, WHAT WERE ROWS NOW BECOME');
  824. WRITELN ('THE COLUMNS IN THE NEW TWO WAY FILE, AND WHAT WERE LEVELS BECOME ROWS.');
  825. WRITELN ('THE MERGE PROGRAM WORKS EXACTLY IN THE REVERSE AND CREATES AN N COLUMN');
  826. WRITELN ('THREE WAY DATA FILE FROM N TWO WAY DATA FILES.');èWRITELN;
  827. WRITELN ('WARNING!');
  828. WRITEL╬á (º     D╧ NO╘ GIV┼ TH┼ FIL┼ TH┼ NAM┼ O╞ ┴ FIL┼ THA╘ ALREADY EXISTS');
  829. WRITELN ('     ON THE DISK OR THE OLD FILE WILL BE ERASED.');
  830. WRITELN;
  831. WRITELN ('ENTER A CARRIAGE RETURN TO CONTINUE');
  832. READLN (C);
  833. REPEAT;
  834. WRITELN ('1.  INPUT OF NEW DATA FILE--ENTER A 1');
  835. WRITELN ('2.  OUTPUT OF AN EXISTING DATA FILE--ENTER A 2');
  836. WRITELN ('3.  ADDITION OF PAIRS TO AN EXISTING DATA FILE--ENTER A 3');
  837. WRITELN ('4.  CORRECTION OF PAIRS IN EXISTING DATA FILE--ENTER A 4');
  838. WRITELN ('5.  DELETION OF ITEMS IN AN EXISTING DATA FILE--ENTER A 5');
  839. WRITELN ('6.  COMBINATION OF TWO EXISTING DATA FILES INTO ONE--ENTER A 6');
  840. WRITELN ('7.  SEPARATION OF A FILE INTO N SINGLE COLUMNS--ENTER A 7');
  841. WRITELN ('8.  MERGING OF N SINGLE COLUMNS INTO A FILE--ENTER AN 8');
  842. WRITE ('CHOICE: ');
  843. READLN (CHOICE);
  844. CASE CHOICE OF
  845. 1:DATAIN;
  846. 2:DATAOUT;
  847. 3:DATAADD;
  848. 4:CORRECT;
  849. 5:DELETE;
  850. 6:COMBINE;
  851. 7:SEPARATE;è8:MERGE;
  852. END;
  853. WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
  854. READLN (C);
  855. WHILE NOT (C IN ['Y','y','n','N']) DO
  856. BEGIN
  857. WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
  858. READLN (C);
  859. END;
  860. SWITCH2:=C IN ['N','n'];
  861. UNTIL SWITCH2;
  862. END.
  863.